درسنامه آموزشی پودمان 4 ارائه دهنده خدمات رایانهای کلاس دهم شبکه و نرم افزار
توسعه بانکهای اطلاعاتی
آیا تا به حال اندیشیدهاید
- آیا تا به حال به این فکر کردهاید که سایتهایی مانند اینستاگرام، یوتیوب یا فروشگاههای آنلاین چگونه اطلاعات میلیونها کاربر و محصول را مدیریت میکنند؟
- چگونه میتوانید از دانش طراحی پایگاه داده MYSQL برای راهاندازی یک کسب و کار اینترنتی استفاده کنید؟
- آیا میدانید کلمه MYSQL از کجا آمده است؟ به نظر شما «MY» در MYSQL به چه معناست؟
آنچه از هنرجو انتظار میرود
1- مفاهیم پایهای بانک اطلاعاتی را بشناسد و در یک محیط عملیاتی آنها را تشخیص دهد.
2- کار با دستورات اولیه پایگاه داده MYSQL
3- کار با برنامه XAMP و WAMP
4- اجرای تابع در پایگاه داده MYSQL
5- کار با انواع دادههای یونیکد، باینری و عددی
استاندارد عملکرد
با استفاده از دستورات پیشرفته پرسوجوها و توابع MYSQL بانک اطلاعاتی را توسعه دهد و برنامه WAMP یا XAMP را نصب نموده، اجرا کند و در آن مدیریت بانک اطلاعاتی ساخته شده را انجام دهد.
در واحد یادگیری گذشته با پایگاه داده Access آشنا شده و آموختید که چگونه میتوانید جداول مختلف را تعریف، ارتباط بین موجودیتها و صفتها را رسم، دادههای موردنظر را وارد و خروجیهای موردنظر را دریافت کنید. از آنجایی که علم فناوری اطلاعات بهعنوان یک علم در حال توسعه میباشد میبایست زیرساخت پایگاه داده را نیز بهروز نمود از همین رو در این واحد در نظر داریم که با مفاهیم اولیه یک پایگاه داده سطح بالاتر با نام MySQL آشنا شوید.
SQL چیست؟
SQL مخفف «Structured Query Language» به معنای «زبان پرسوجوی ساختار یافته» است و یک زبان برنامهنویسی است که برای مدیریت و تعامل با پایگاههای داده مورد استفاده قرار میگیرد. این زبان بهصورت استاندارد در مدیریت پایگاههای داده رابطهای (RDBMS) مانند Microsoft SQL Server ،Oracle ،MySQL ،PostgreSQL و غیره استفاده میشود.
Sql از دستورات متنوعی برای انجام عملیات مختلف بر روی دادهها استفاده میکند که در ادامه به آنها اشاره خواهد شد.
1- SELECT: برای بازیابی دادهها از جداول پایگاه داده.
2- INSERT: برای افزودن داده جدید به جداول .
3- UPDATE: برای بهروزرسانی دادههای موجود در جداول.
4- DELETE: برای حذف دادهها از جداول.
5- CREATE: برای ایجاد جدول در پایگاه داده.
6- ALTER: برای تغییر ساختار جدول.
7- DROP: برای حذف جدول.
MySQL چیست؟
MySQL یک سیستم مدیریت پایگاه داده رابطهای (RDBMS) است که بهطور متن باز (Open Source) ارائه میشود و جامعه وسیعی از استفادهکنندگان را به علت امکان پشتیبانی از زبانهای مختلف برنامهنویسی و سهولت در نصب و پایدار بودن را در بردارد و به همین علت از پایگاه دادههای مورد علاقه برای پروژههای کوچک و متوسط است.
اصول پایگاه دادهها
آشنایی با مفاهیم اولیه پایگاه دادهها، جداول، رکوردها و ستونها
پایگاه دادهها مجموعهای از دادههای سازماندهی شده هستند که بهصورت الکترونیکی ذخیره میشوند و امکان مدیریت، دسترسی و اصلاح این دادهها را فراهم میکنند. پایگاه دادهها بهعنوان ابزار اصلی برای ذخیرهسازی و مدیریت دادهها در بسیاری از برنامههای نرمافزاری مورد استفاده قرار میگیرند.
جداول (Tables): جداول اصلیترین بخشهای پایگاه دادهها هستند. هر جدول شامل دادههایی است که بهصورت سطرها (رکوردها) و ستونها سازماندهی شدهاند.
رکوردها (Records): رکوردها در جدولها بهصورت سطرها نمایش داده میشوند. هر رکورد نشاندهنده یک واحد دادهای است که شامل مقادیر مختلفی از دادهها در ستونهای مختلف است.
ستونها (Columns): ستونها در جدولها بهصورت عمودی نمایش داده میشوند و هر ستون نمایانگر یک نوع داده خاص است. بهعنوان مثال، در جدول دانشآموزان، ممکن است ستونهایی به نام، نامخانوادگی، سن و رشته تحصیلی وجود داشته باشد.
نمونهای از یک جدول پایگاه داده
این مثال سادهای از یک جدول پایگاه داده است که اطلاعات دانشآموزان را ذخیره میکند. هر سطر نمایانگر یک دانشآموز است.
آشنایی با شکل کلی نوشتن دستورهای ابتدایی SQL
دستور SELECT
دستور SELECT برای بازیابی دادهها از جداول پایگاه داده استفاده میشود. با استفاده از این دستور، میتوانید دادههای موجود در یک یا چند ستون را انتخاب و مشاهده کنید.
این دستور تمامی ستونها و رکوردهای جدول student را بازیابی میکند.
Select name,age from students where age > 16;
این دستور فقط ستونهای را از جدول student بازیابی میکند که دارای سن بیشتر از 16 سال باشند.
دستور INSERT
دستور INSERT برای اضافه کردن رکورد یا رکوردهای جدید به جدول استفاده می شود. با استفاده از این دستور، می توانید داده های جدیدی به جدول اضافه کنید.
در مثال زیر شما نام دانشآموزی را با شماره دانشآموزی و سن مشاهده میکنید که با دستور insert به عنوان یک رکورد جدید به جدول دانشآموزان اضافه شده است:
insert into students (id , name , age)
values (1 , ‘ali’,16);
دستور CREATE
این دستور برای ساخت پایگاه داده جدید، جدول، یا سایر ساختارهای پایگاه داده مانند indexها استفاده میشود. create به کاربران امکان میدهد تا ساختار دادهها را از پایه بسازند و آنها را مطابق با نیازهای کاربردی خود شکل دهند.
دستور UPDATE
دستور UPDATE برای تغییر دادههای موجود در جدولها به کار میرود. این دستور اجازه میدهد تا مقادیر یک یا چند ستون، بهروز شوند. Update در مواردی که نیاز به تصحیح یا تغییر دادهها بدون حذف و ایجاد مجدد رکوردها است، استفاده میشود.
دستور DELETE
دستور Delete برای حذف یک یا چند رکورد از جدول استفاده میشود. این دستور بر اساس شرایط مشخص شده، رکوردهای موردنظر را حذف میکند و برای پاکسازی دادههای منسوخ شده در پایگاه داده کاربرد دارد.
فراگیری دستورات عمومی به شما این امکان را میدهد که بتوانید با برنامه mysql و برنامههای پیشرفتهتر آن ارتباط بهتری برقرار کنید.
شروع کار با SQL با استفاده از (wamp - xampp)
در واقع WAMP مخفف کلمههای PHP ،MySQL ،Apache ،Windows و Perl است، این نامگذاری به آن علت است که wamp قادر است، بستری را برای شما فراهم کند تا بدون نیاز به انجام تنظیمات جانبی، تمام سرویسهایی که نام برده شد را روی سیستم ویندوز پیادهسازی و پشتیبانی کنید. در واقع استفاده از این برنامه برای کسانی توصیه میشود که امکان کارکردن با سیستم عامل لینوکس را ندارند. ومپ امکان نصب، تست، برنامهنویسی و اجرای نرم افزارهای تحتوب متن باز را برای این افراد مهیا میکند.
فعالیت 7 (صفحهٔ 232 کتاب درسی)
فرض کنید میخواهید یک وردپرس را در لوکالهاست نصب کنید. برای این کار باید وردپرس را دانلود کنید و در مسیر C:\xampp\htdocs آن را از حالت فشرده خارج کنید. چون وقتی وردپرس را از حالت فشرده خارج میکنید همه فایلهای آن در پوشهای به نام wordpress قرار میگیرد در این حالت برای دسترسی به مسیر نصب در مرورگر خود باید این آدرس را وارد کنید:
http://localhost/wordpress
در این آدرس نصب کننده وردپرس به شما نمایش داده میشود و میتوانید کار نصب را انجام دهید.
برای خارج شدن از Xampp نیز روی دکمه Quit کلیک کنید تا سرویسهای شروع شده متوقف شوند و Xampp غیرفعال شود.
1- بعد از نصب Xampp برنامه را باز کرده و منتظر بمانید تا سرویسها Start شوند.
2- روبهروی سرویس MYSQL دکمه Admin را بزنید تا صفحه PHPMyadmin باز شود.
3- PHPMyadmin ابزاری برای مدیریت دیتابیسها و ساخت دیتابیس جدید است.
4- در PHPMyadmin روی زبانه Databases کلیک کنید.
5- زیرنوشته Create database کادری میباشد که در داخل عبارت Database name نوشته شده است در این بخش شما باید اسم دیتابیس موردنظر خود را انتخاب کنید.
6- سعی کنید اسمی ساده ولی غیرقابل حدس زدن انتخاب کنید. اسم دیتابیس باید با حروف شروع شود و از عدد یا علامت استفاده نشود.
7- بعد از وارد کردن اسم دیتابیس Enter را بزنید تا در ستون سمت چپ صفحه دیتابیس اضافه شود.
انواع توابع در MYSQL
توابع SQL دارای فرمانهایی است که عملیات خاصی را بر روی دادهها اجرا میکنند. بهعنوان مثال، چند مورد از توابع پُرکاربرد SQL شامل تابع ()SUM برای اضافه کردن اعداد با هم، ()LOWER برای تبدیل کردن کاراکترهای متن به حروف کوچک و تابع ()COUNT برای شمردن عناصر درون پایگاه داده هستند.
توابع درونی SQL برحسب نوع کاربرد و ورودی و خروجی به 6 دسته مهم تقسیم میشوند. هر دسته هم توابع مخصوص به خود را دارد که عبارتاند از:
- توابع تجمعی (Aggregate Functions)
- توابع تحلیلی (Analytic Functions)
- توابع SQL مخصوص کار با بیتها (Bit Manipulation SQL Functions)
- توابع SQL برای رتبهبندی (Ranking Functions)
- توابع Rowset
- توابع اسکالر (Scalar Functions)
بهعنوان نمونه توابع تجمعی اغلب برای محاسبه مجموعه خاصی از مقادیر بهکار برده میشوند، که بهعنوان جواب مقدار مجزایی را برمیگردانند. کاربران میتوانند از طریق بند HAVING در عبارت SELECT از کاربرد این توابع بهرهمند شوند.
1- تابع COUNT
تابع COUNT نوعی از توابع تجمعی است که بهعنوان خروجی تعداد رکوردهای مشخص شده توسط عبارت کوئری SELECT در زبان SQL را شمرده و برمیگرداند. فرم کلی استفاده از این تابع بهصورت زیر است.
همانطور که مشاهده میشود، این تابع دارای دو نوع پارامتر اصلی و یک عبارت expression است.
- ALL: تابع تجمعی را بر روی همه مقادیر درون گروه اعمال میکند. یعنی همه مقادیر شمرده میشوند. بهصورت پیشفرض، این پارامتر اعمال میشود.
- DISTINCT: تابع تجمعی را فقط بر روی مقادیر متمایز اعمال میکند، نه مقادیر «تهی».
- EXPRESSION: این عبارت از هر نوع داده بهجز متن، «NTEXT» و تصویر را میپذیرد.
علامت ستاره * تعیین میکند که تابع ()COUNT برای شمردن مجموع ردیفهای جدول باید همه سطرها را در نظر بگیرد.
تابع (*)COUNT برای برگرداندن مجموع ردیفهای جدول قواعد زیر را رعایت میکند.
1- مقادیر تکراری و Null را هم محاسبه میکند.
2- هیچ پارامتر دیگری از جمله DISTINCT را نمیپذیرد.
3- از آنجا که هیچ اطلاعات خاصی درباره ستونها را استفاده نمیکند، پس نیازی هم به پارامتر expression ندارد.
خروجی تابع ()COUNT از نوع داده Integer است. برای جدولهای بسیار بزرگ با تعداد بیشتر از $2\mathop {}\limits^ \wedge 31 - 1$ ردیف باید از تابع ()COUNT_BIG استفاده کنیم.
2- تابع SUM
تابع SUM مجموع همه مقادیر یا فقط مقادیر متمایز شده در عبارت داده شده را محاسبه میکند. این تابع فقط در ارتباط با ستون یا عبارتهای حاوی مقادیر عددی قابل استفاده است. تابع ()SUM مقادیر NULL را نادیده میگیرد. فرم کلی استفاده از این تابع بهصورت زیر است.
این تابع دارای 3 پارامتر اصلی است.
numeric_expression: مقدار عدد را بهصورت ثابت عددی، ستونی از یک جدول یا تابعی خاص، نشان میدهد.
ALL: این مقدار بهصورت پیشفرض تنظیم میشود. یعنی تابع ()SUM همه مقادیر را در نظر میگیرد.
DISTINCT: با کمک این پارامتر فقط مقادیر متمایز شده درون numeric_expression بهصورت یکتا توسط تابع ()SUM در نظر گرفته میشوند.
3- تابع AVG
تابع AVG نوعی از توابع تجمعی است که مقدار میانگین دادههای درون ستون مشخص شده را محاسبه میکند. فرم کلی برای استفاده از این تابع بهصورت زیر است.
این تابع دارای 3 پارامتر اصلی است.
expression: عبارت معتبری که مقادیر نوع دادهای را برمیگرداند. این عبارت میتواند ستون خاصی از جدول باشد.
ALL: مقدار پیشفرضی است که همه مقادیر موجود در expression یا ستون را مشخص میکند.
DISTINCT: برای محاسبه میانگین، فقط مقادیر یکتا را در نظر میگیرد.
4- تابع MIN
تابع MIN: کمترین مقدار داده موجود در ستون یا حاصل از عبارتی را محاسبه میکند. فرم کلی برای استفاده از این تابع بهصورت زیر است:
تابع MIN دارای فقط یک پارامتر اصلی است.
Expression: این عبارت میتواند هر ترکیبی از عملگرهای ریاضی یا رشتهای از قبیل ثابت عددی، ستونی از جدول یا تابع تعریف شده یا درونی باشد.
5- تابع MAX
تابع MAX بیشترین مقدار داده موجود در ستون یا حاصل از عبارتی را محاسبه میکند. فرم کلی برای استفاده از این تابع بهصورت زیر است.
با توجه به سینتکس بالا تابع ()MAX دارای فقط یک پارامتر اصلی است.
expression: این عبارت میتواند هر ترکیبی از عملگرهای ریاضی یا رشتهای از قبیل ثابت عددی، ستونی از جدول یا تابع تعریف شده یا درونی باشد.
عملگرها و متغیرها در SQL
همانطوری که در ابتدا اشاره شد هنرآموز در نظر دارد بعد از ایجاد خروجی از نمرات دانشآموزان اقدام به مقایسه بین آنها نماید. در این بخش لازم است که با استفاده از برخی از عملگرهای موجود در برنامه نسبت به انجام عملیات مقایسه تلاش کند. اما ابتدا باید معانی را بداند.
عملگر نماد یا کلمهای است که روی یک یا چند مقدار (عملوند / operand) عملی انجام میدهد و یک نتیجه تولید میکند. در پایگاه داده عملگرهای مختلفی وجود دارد مانند عملگرهای متنی، ریاضی، منطقی، مقایسهای و ترکیبی.
عملگر ریاضی
عملگرهای ریاضی هم نمادهایی هستند که با استفاده از آنها میشود یک سری از اعمال ریاضی را انجام داد.
اول بیایید با شکل این عملگرها آشنا بشویم. این عملگرها همان عملگرهای معروف، جمع و ضرب، تقسیم و تفریق و باقیمانده هستند:
عملگرهای مقایسهای
عملگرهای مقایسهای که عبارتاند از: علامتهای کوچکتر، بزرگتر، مساوی، نامساوی، کوچکتر مساوی، بزرگتر مساوی.
عملگر منطقی
عملگرهای منطقی در زبان SQL ابزاری قدرتمند برای ترکیب دو یا چند شرط و ایجاد یک شرط پیچیدهتر هستند. این عملگرها در طیف وسیعی از وظایف مربوط به پایگاه داده، از جمله فیلتر کردن دادهها، جستوجو و مرتبسازی، کاربرد دارند.
انواع عملگرهای منطقی:
- AND: هر دو شرط باید برقرار باشند.
- OR: فقط کافی است یکی از شروط برقرار باشد.
- NOT: شرط را معکوس میکند.
کاربردهای عملگرهای منطقی:
فیلتر کردن دادهها: برای انتخاب رکوردهای خاص از یک جدول بر اساس معیارهای مختلف.
جستوجو: برای یافتن اطلاعات خاص در پایگاه داده.
مرتبسازی: برای مرتب کردن دادهها بر اساس معیارهای مختلف.
دستورات شرطی: برای تعیین مسیر اجرای برنامه.
فرض کنید یک پایگاه داده اطلاعات مربوط به کارمندان یک شرکت را ذخیره میکند. در نظر داریم که کارمندان را بر اساس شرایط خاص فیلتر کنیم.
1- در ابتدا جدول برای کارمندان ایجاد کنید.
2- سپس نمونههایی را با عنوان کارمند با مشخصات اسم و فامیل، سن، واحد فعالیت و حقوق دریافتی وارد نمایید.
3- با استفاده از عملگرهای مناسب کارمندانی که در بخش IT فعالیت دارند و حقوق آنها بیش از 35 میلیون تومان است را انتخاب کنید.
4- کارمندان بخش HR را مشخص کند.
5- کارمندانی که سن آنها 28 یا 45 سال است را مشخص کند.
انواع متغیرها در SQL بر چند دسته تقسیم میشود که میتوان آن را در قالب جداول زیر بیان کرد:
داده یونیکد
این نوع فیلدها برای نگهداری متون است. نکته با اهمیت این است که برای نگهداری هر حرف، از دو بایت استفاده میشود. پس مسلماً نسبت به نوع دادههای کاراکتری، حافظه بیشتری را به خود اختصاص میدهد و در ضمن کمی هم کندتر است. این نوع فیلدها، احتیاج به Collation ندارند.
| شرح | نوع داده |
|---|---|
| در این نوع داده، اطلاعات از 1 تا حداکثر 4000 حرف با طول ثابت ذخیره میشود. | nchar(n) |
| در این نوع داده، اطلاعات از 1 تا حداکثر 4000 بایت با طول متغیر ذخیره میشود. | nvarchar(n) |
| در این نوع داده از 1 تا 1 مگا حرف ذخیره میشود. مکانیزم آن هم بهصورت Pointer میباشد. | nvarchar(max) |
| در این نوع داده، از 1 تا 1 مگا حرف ذخیره میشود. مکانیزم آن هم بهصورت Pointer میباشد. | ntext |
داده باینری
این نوع فیلدها برای نگهداری اطلاعات بهصورت باینری مانند تصاویر مناسب هستند.
| شرح | نوع داده |
|---|---|
| یک فیلد دو بیتی است و می تواند 0 و 1 و Null را ذخیره کند. کاربرد آن در زمانهایی است که دو حالت وجود داشته باشد. مانند جنسیت زن و مرد. | bit |
| این نوع فیلدها، از 1 تا 8000 بایت را در خود جای میدهند. | binary(n) |
| این نوع فیلدها هم از 1 تا 8000 بایت را در خود جای میدهند (متغیر). | varbinary(n) |
| این نوع Datatype در SQL، دود هزار و پنج معرفی شده و تقریباً همانند دادههای Image هستند. | varbinary(max) |
| این نوع فیلدها از 1 تا حداکثر 2 گیگابایت را میتوانند ذخیره کنند. فرق این نوع دادهها با دو نوع قبلی این است که در دو نوع قبلی، اطلاعات در خود رکورد ثبت میشوند ولی در این نوع دادهها، اطلاعات در یک Page ذخیره میشود و به جایش در رکورد، یک پوینتر 16 بایتی ذخیره میشود. این نوع فیلدها در SQL ده حذف شده و به جایش باید از VarBinary استفاده کرد. | image |
داده عددی
این نوع فیلد برای نگهداری اعداد صحیح و بدون اعشار استفاده میگردد و دارای 4 نوع به شرح زیر است. در ضمن این نوع فیلدها رتبه یک سرعت در نوع فیلدهای عددی را دارد.
| شرح | نوع داده |
|---|---|
| یک بایت را اشغال میکند و میتواند از 0 تا 255 را در خود ذخیره کند. | tinyint |
| یک عدد دو بایتی است و میتواند از 32767 منفی تا 32767 مثبت را در خود ذخیره کند. | smallint |
| یک عدد چهار بایتی است که میتواند اعداد بین مثبت و منفی 2 میلیارد را در خود ذخیره کند. | int |
| یک عدد 8 بایتی است که میتواند اعداد بین مثبت و منفی 4 میلیارد را در خود ذخیره کند. | bigint |
| این نوع فیلد برای نگهداری اعداد اعشاری با تعداد اعشار مشخص استفاده میگردد. این نوع فیلدها بسیار کند بوده و استفاده از آنها توصیه نمیگردد که در آن Precision به معنای تعداد کل رقمهای عدد و Scale تعداد ارقام اعشار را مشخص میکند. مثلاًً اگر فیلدی بهصورت (6,2)Deciaml تعریف شود، حداکثر آن برابر 9999,99 میباشد. | decimal(p,s) |
| یک عدد 4 بایتی است که میتواند 6 رقم صحیح و 4 رقم اعشار را در خود ذخیره کند. | smallmoney |
| یک عدد 8 بایتی است که میتواند 15 رقم صحیح و 4 رقم اعشار را در خود ذخیره کند. | money |
| یک عدد 8 بایتی که اعداد بهصورت توانی از 10 نگهداری میشود. | float(n) |
| یک عدد 4 بایتی است که اعداد بهصورت توانی از 10 نگهداری میشود. | real |
داده تاریخ
این نوع فیلدها برای نگهداری تاریخ میلادی و ساعت استفاده میشود و برای تاریخ شمسی کاربرد ندارد.
| شرح | نوع داده |
|---|---|
| این نوع فیلد، 8 بایتی است و از سال 1700 تا 9999 را با دقت هزارم ثانیه ذخیره میکند. | datetime |
| این نوع فیلد، 4 بایتی است و از سال 1900 تا 2079 را با دقت هزارم ثانیه ذخیره میکند. | smalldatetime |
| این نوع فیلدها برای نگهداری تاریخ میلادی استفاده میشود. | date |
| این نوع فیلدها برای نگهداری ساعت استفاده میشود. | time |